/******************************************************************************

	COPYRIGHT(C) JONAS 'SORTIE' TERMANSEN 2010.

	This file is part of the Maxsi Library.

	Maxsi Library is free software: you can redistribute it and/or modify it
	under the terms of the GNU Lesser General Public License as published by
	the Free Software Foundation, either version 3 of the License, or (at your
	option) any later version.

	Maxsi Library is distributed in the hope that it will be useful, but
	WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
	or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
	License for more details.

	You should have received a copy of the GNU Lesser General Public License
	along with Maxsi Library. If not, see <http://www.gnu.org/licenses/>.

	Maxsi Library
	A powerful Cross-Platform C++ General Purpose Library that allows you to
	efficiently create high-performance and reliable applications.

	MaxsiBufferAssembler.h
	A simple system for combining multiple binary streams into one.

****************************************************************************/

#ifndef MaxsiBufferAssembler_H
#define MaxsiBufferAssembler_H

BeginMaxsiNamespace

typedef List BufferAssembler;

MAXSI_LINKCPP BufferAssembler CreateBufferAssembler();
MAXSI_LINKCPP MaxsiError WriteBufferData(BufferAssembler Assembler, BYTE* Data, size_t DataSize);
MAXSI_LINKCPP MaxsiError WriteBufferDataA(BufferAssembler Assembler, char* Data);
MAXSI_LINKCPP MaxsiError WriteBufferDataU(BufferAssembler Assembler, UTF8_t* Data);
MAXSI_LINKCPP MaxsiError WriteBufferDataW(BufferAssembler Assembler, wchar_t* Data);
MAXSI_LINKCPP BYTE* AssembleBuffer(BufferAssembler Assembler);
MAXSI_LINKCPP void DeleteBufferAssembler(BufferAssembler Assembler);

EndMaxsiNamespace

#endif

